package com.ciwong.epaper.modules.epaper.util;

import android.content.Context;
import android.util.AttributeSet;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.widget.ScrollView;

public class ScrollViewExtend extends ScrollView {

    private GestureDetector mGestureDetector;
    private ScrollViewListener scrollViewListener = null;
    //用来控制有些情况不想让ScrollView滑动

    public ScrollViewExtend(Context context, AttributeSet attrs) {
        super(context, attrs);
        mGestureDetector = new GestureDetector(context, new YScrollDetector());
    }

    public void setScrollViewListener(ScrollViewListener scrollViewListener) {
        this.scrollViewListener = scrollViewListener;
    }




    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        super.onInterceptTouchEvent(ev);
        //拦截不拦截全凭用户的滑动方向  如果是水平方向则不拦截  子控件获得事件 如果是垂直方向 自己消化事件
        return mGestureDetector.onTouchEvent(ev);
    }

    class YScrollDetector extends GestureDetector.SimpleOnGestureListener {

        @Override
        public boolean onScroll(MotionEvent e1, MotionEvent e2,
                                float distanceX, float distanceY) {
            //如果我们滚动更接近水平方向,返回false,让子视图来处理它
            return (Math.abs(distanceY) > Math.abs(distanceX));
        }

    }

    /**
     * 我需要知道滑动距离
     *
     * @param x 第一个参数为变化后的X轴位置
     * @param y 第二个参数为变化后的Y轴的位置
     * @param oldx 第三个参数为原先的X轴的位置
     * @param oldy 第四个参数为原先的Y轴的位置
     */
    @Override
    protected void onScrollChanged(int x, int y, int oldx, int oldy) {
        super.onScrollChanged(x, y, oldx, oldy);
        if (scrollViewListener != null) {
            scrollViewListener.onScrollChanged( x, y, oldx, oldy);

        }
    }

    public interface ScrollViewListener {
        void onScrollChanged( int x, int y, int oldx, int oldy);
    }



}
